package services;

import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStream;
import java.util.Properties;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

/**
 * Initialisiert den ConfigurationService welcher eine Properties-Datei
 * lesen soll und anschliessend eine neue Instanz des
 * ConfigurationService Objektes aus der gelesenen Konfiguration in der Datei
 * erzeugt. Diese Konfiguration wird z.B. dazu verwendet um die Stammdaten der
 * Universitaet (Name, Anzahl Studenten...) zu setzen, aber auch um andere
 * Services wie z.B. den Trenner (; oder ,) fuer den InputService und
 * MasterDataOutput zu definieren.
 *
 *
 * @author Patrick Nielinger
 * @version 1.0.0.0
 */
public class ConfigurationService {

    /**
     * Default Propertiesname
     */
    String propFileName = "configuration.properties";
    
    private static final Logger logger = LoggerFactory.getLogger(ConfigurationService.class);

    /**
     * Erstellt einen neuen Configuration-Service mit einer speziellen
     * configurations-Datei
     *
     * @param propertiesName Name der Properties-Datei
     */
    public ConfigurationService(String propertiesName) {
        propFileName = propertiesName;
    }

    /**
     * Erstellt einen neuen Configuration-Service mit einer standard
     * configurations-Datei
     *
     * @param propertiesName Name der Properties-Datei
     */
    public ConfigurationService() {
    	try {
			this.getPropValues();
		} catch (IOException e) {
			logger.error(e.toString());
		}
    }

    /**
     * Liest die Properties-Datei ein und gibt alle Properties zurueck
     *
     *
     * @return Properties-Objekt
     */
    public Properties getPropValues() throws IOException {
        Properties prop = new Properties();

        InputStream inputStream = getClass().getClassLoader().getResourceAsStream(propFileName);

        if (inputStream != null) {
            prop.load(inputStream);
        } else {
            throw new FileNotFoundException("property file '" + propFileName + "' not found in the classpath");
        }
        
        return prop;
    }
}
